﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;

namespace $safeprojectname$
{
    /// <summary>
    ///     Base Business tier API.
    ///     Facades provide two basic operation types
    ///     1) Get the 'Business Entities' (using its inner DAO objects) to the upper layers as fully valid objects
    ///     2) Set the 'Business Entities' to persistence. In this cases Facades is responsible for
    ///     Business rules validation. That mostly means that
    ///     I. only valid object can be inserted;
    ///     II. only valid and existing object can updated
    ///     III. only unused instance without any relations and dependencies can be deleted.
    ///     To provide all these operations, IFacade contains the Messages collection,
    ///     which can be used to inform upper layers that something happend (info, warn, error)
    /// </summary>
    public interface IFacade : IService, IPublishingReporter, IMessagesHolder
    {
        /// <summary>
        ///     The setter for a binder to be used for Business object binding
        /// </summary>
        IObjectBinder Binder { set; }
    }
}